-- KEYS[1]: 优惠券库存key
-- KEYS[2]: 用户限购key
-- ARGV[1]: 用户ID
-- ARGV[2]: 优惠券ID
-- ARGV[3]: 每人限购数量



-- 获取优惠券库存
local couponCount = tonumber(redis.call('get', KEYS[1]))
-- 优惠券库存不足
if couponCount == nil or couponCount <= 0 then
    return 0
end

-- 用户领取当前优惠卷的数量
local userCouponCount = tonumber(redis.call('get', KEYS[2])) or 0
-- 当前用户已经超过限购数量
if userCouponCount >= tonumber(ARGV[3]) then
    return 1
end

-- 优惠券库存减1
redis.call("DECR",KEYS[1])
-- 用户领取当前优惠卷的数量加1
redis.call("INCR",KEYS[2])

-- 领取成功
return 2
